require "SolucaoFactory"
require "Mutador"
require "Cruzador"

factory = SolucaoFactory.new 100, -512, 512
populacao = factory.gerar_populacao
populacao.each do |e|
	#p e.valor
end
m  = Mutador.new
operacao = Proc.new { |e|
	aux = e.valor ^ (2 ** (rand * 12))
	while(aux < e.limite_inferior or aux > e.limite_superior)
		aux = e.valor ^ (2 ** (rand * 12))
	end	
	e.valor = aux
}
m.operacao = operacao
p populacao[0].valor
m.muta populacao[0]
p populacao[0].valor
p "Fim da mutacao"
c = Cruzador.new
cross = Proc.new { |e,f|
	Solucao.new((e.valor | f.valor), e.limite_inferior, e.limite_superior)
}
p populacao[0].valor
p populacao[1].valor
c.oper_cross = cross
novo = c.crossover populacao[0], populacao[1]
p novo.valor
